package com.linkgie.galaxyframework.persistence;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface DataUpgrade {

    /**
     * 数据类型名称；
     * 
     * @return
     */
    String value() default "";

    /**
     * 数据类型；
     * 
     * @return
     */
    Class<?> dataType() default Void.class;

    /**
     * 版本；
     * <p>
     * 只有标注的版本是最新版本，即大于等于该数据类型的所有执行版本，升级处理接口才会进入调度；
     * @return
     */
    long version() default 0;

    /**
     * 最大的调用次数；
     * <p>
     * 默认为 1 次；
     * <p>
     * 
     * @return
     */
    long maxScheduledTimes() default 1;

}
